/**
 * 贝塞尔动画缓动函数，用于控制动画的速度变化
 */
export declare const GameHighBesselEases: {
  /**线性变化函数，返回输入值本身*/
  linear: (r: number) => number;
  /**正弦变化函数，使用正弦曲线进行插值*/
  sine: (r: number) => number;
  /**平滑步进函数，用于创建平滑的动画效果*/
  easeInOut: (r: number) => number;
  /**加速步进函数，开始时较慢，逐渐加速*/
  easeIn: (r: number) => number;
  /**减速步进函数，开始时较快，逐渐减速*/
  easeOut: (r: number) => number;
  /**平方加速步进函数，加速效果更为明显*/
  easeInQuad: (r: number) => number;
  /**平方减速步进函数，减速效果更为明显*/
  easeOutQuad: (r: number) => number;
  /**平方平滑步进函数，根据时间进度选择加速或减速*/
  easeInOutQuad: (r: number) => number;
  /**立方加速步进函数，加速效果更加明显*/
  easeInCubic: (r: number) => number;
  /**立方减速步进函数，减速效果更加明显*/
  easeOutCubic: (r: number) => number;
  /**立方平滑步进函数，根据时间进度选择加速或减速*/
  easeInOutCubic: (r: number) => number;
};
/**
 * GameHighBessel 类负责管理游戏中的高贝塞尔曲线动画
 * 它使用贝塞尔曲线来平滑地移动相机实体，并支持不同的缓动函数来控制动画速度
 */
export default class GameHighBessel {
  /**
   * 获取贝塞尔当前进度
   * 此属性表示当前进度的值，用于外部获取进度状态
   * @returns {number} 当前进度，范围在0到1之间
   */
  get progress(): number;
  /**
   * 设置贝塞尔当前进度
   * 此属性允许设置当前进度值，并确保其在0到1的范围内
   * 当进度值被设置时，根据贝塞尔曲线计算相机的位置，并应用偏移量
   * @param {number} value 要设置的进度值，应在0到1的范围内
   */
  set progress(value: number);
  /**
   * 延迟时间，用于控制某些操作的执行时机
   */
  delay: number;
  /**
   * 游戏中的相机实体。
   * 通过贝塞尔曲线可以控制相机的位置和方向。
   */
  cameraEntity: GameEntity | undefined;
  /**
   * 检查标志，用于可记录贝塞尔路径
   */
  check: boolean;
  /**
   * X轴偏移量，用于调整相机在X轴上的位置
   */
  offset_X: number;
  /**
   * Y轴偏移量，用于调整相机在Y轴上的位置
   */
  offset_Y: number;
  /**
   * Z轴偏移量，用于调整相机在Z轴上的位置
   */
  offset_Z: number;
  /**
   * 构造函数初始化了动画的参数和固定点列表
   * @param config 包含了动画的配置信息，如固定点列表、相机实体、延迟和偏移量
   */
  constructor(config: {
    /**
     * 可以是固定点名称的列表，也可以是表示位置的坐标对象列表。
     * - 固定点：模型名字后加上数字，如“pos-1”、“pos-2”等。
     * - 位置坐标：包含x、y、z三个数值的对象列表。
     */
    fixedPointNameOrPosList:
      | string
      | {
          x: number;
          y: number;
          z: number;
        }[];
    /**
     * 固定点模型是否不可见。
     */
    fixedPointMeshInvisible?: boolean;
    /**
     * 游戏中的相机实体。
     * 通过贝塞尔曲线可以控制相机的位置和方向。
     */
    cameraEntity?: GameEntity;
    /**
     * 延迟时间（可选）。
     * 用于指定某些操作（如动画或过渡）之前的延迟。
     */
    delay?: number;
    /**
     * 偏移量（可选）。
     * 用于指定相对于某个参考点或目标的位置偏移。
     */
    offset?: [number, number, number];
  });
  /**
   * 返回固定点坐标列表
   * @returns 固定点列表
   */
  fixedPointList(): {
    x: number;
    y: number;
    z: number;
  }[];
  /**
   * 暂停动画并返回当前进度
   * @returns 当前动画进度
   */
  pause(): number;
  /**
   * 设置动画完成时的回调函数
   * @param callback 动画完成时执行的回调函数
   */
  onFinish(callback: () => void): void;
  /**
   * 设置动画开始播放时回调函数
   * @param callback 播放事件触发时调用的回调函数
   */
  onPlay(callback: () => void): void;
  /**
   * 当刷新动画进度时执行的回调函数
   * @param point - 一个当前进度下的数据点，包含当前xyz坐标数值字段
   */
  onUpdate(callback: (point: GameVector3) => void): void;
  /**
   * 播放动画
   * @param config 动画配置，包括进度、速度和缓动函数
   */
  play(config?: {
    /**
     * 游戏中的相机实体。
     * 通过贝塞尔曲线可以控制相机的位置和方向。
     */
    cameraEntity?: GameEntity;
    /**
     * 定义动画或过渡效果的进度
     * @type {number}
     */
    progress?: number;
    /**
     * 定义动画或过渡效果的速度
     * @type {number}
     */
    speed?: number;
    /**
     * 定义动画或过渡效果的缓动函数类型
     * @type {keyof typeof GameHighBesselEases}
     */
    ease?: keyof typeof GameHighBesselEases;
  }): void;
}
